/*
 * @Author: 15663569761 1697354625@qq.com
 * @Date: 2023-03-06 16:33:15
 * @LastEditors: 15663569761 1697354625@qq.com
 * @LastEditTime: 2023-03-06 16:47:36
 * @FilePath: /lesson24/named_pipe/comm.hpp
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#pragma once

#include<iostream>
#include<string>
#include<cerrno>
#include<cassert>
#include<cstring>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#define NAMED_PIPE "/tmp/mypipe.106"

bool createFifo(const std::string& path)
{
    umask(0);
    int n = mkfifo(path.c_str(), 0666);//读、写、执行
    if(n == 0) return true;
    else
    {
        std::cout << "errno: " << errno << "err string: " << strerror(errno) << std::endl;
        return false;
    }
}

//去掉管道文件
void removeFifo(const std::string& path)
{
    int n = unlink(path.c_str());
    assert(n == 0);//debug有效，release里面就被去掉了
    (void)n;//n不使用就会出现warning，代码变成release之后没有assert，n就不会被使用，因此在这里使用一下。
}


//assert和if的使用技巧：意料之中用assert，意料之外用if判断

